home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGMISC / PCSSP.LZH / PC-SSP.ZIP / STATDATA.ZIP / TAB2.FOR < prev    next >
Text File  |  1985-12-27  |  6KB  |  198 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C     SUBROUTINE TAB2
  5. C
  6. C     PURPOSE
  7. C        PERFORM A TWO-WAY CLASSIFICATION FOR TWO VARIABLES IN AN
  8. C        OBSERVATION MATRIX (OR A MATRIX SUBSET) OF THE FREQUENCY,
  9. C        PERCENT FREQUENCY, AND OTHER STATISTICS OVER GIVEN CLASS
  10. C        INTERVALS.
  11. C
  12. C     USAGE
  13. C        CALL TAB2(A,S,NOV,UBO,FREQ,PCT,STAT1,STAT2,NO,NV)
  14. C
  15. C     DESCRIPTION OF PARAMETERS
  16. C        A      - OBSERVATION MATRIX, NO BY NV
  17. C        S      - INPUT VECTOR GIVING SUBSET OF A. ONLY THOSE
  18. C            OBSERVATIONS WITH A CORRESPONDING NON-ZERO S(J) ARE
  19. C            CONSIDERED. VECTOR LENGTH IS NO.
  20. C        NOV   - VARIABLES TO BE CROSS-TABULATED. NOV(1) IS VARIABLE
  21. C            1, NOV(2) IS VARIABLE 2. VECTOR LENGTH IS 2. NOV
  22. C            MUST BE GREATER THAN OR EQUAL TO 1 AND LESS THAN
  23. C            OR EQUAL TO NV.
  24. C        UBO   - 3 BY 2 MATRIX GIVING LOWER LIMIT, NUMBER OF
  25. C            INTERVALS, AND UPPER LIMIT OF BOTH VARIABLES TO BE
  26. C            TABULATED (FIRST COLUMN FOR VARIABLE 1, SECOND
  27. C            COLUMN FOR VARIABLE 2). IF LOWER LIMIT IS EQUAL TO
  28. C            UPPER LIMIT FOR VARIABLE 1, THE PROGRAM USES THE
  29. C            MINIMUM AND MAXIMUM VALUES ON EACH VARIABLE. NUMBER
  30. C            OF INTERVALS MUST INCLUDE TWO CELLS FOR UNDER AND
  31. C            ABOVE LIMITS.
  32. C        FREQ  - OUTPUT MATRIX OF FREQUENCIES IN THE TWO-WAY
  33. C            CLASSIFICATION. ORDER OF MATRIX IS INT1 BY INT2,
  34. C            WHERE INT1 IS THE NUMBER OF INTERVALS OF VARIABLE 1
  35. C            AND INT2 IS THE NUMBER OF INTERVALS OF VARIABLE 2.
  36. C            INT1 AND INT2 MUST BE SPECIFIED IN THE SECOND
  37. C            POSITION OF RESPECTIVE COLUMN OF UBO MATRIX.
  38. C        PCT   - OUTPUT MATRIX OF PERCENT FREQUENCIES, SAME ORDER
  39. C            AS FREQ.
  40. C        STAT1 - OUTPUT MATRIX SUMMARIZING TOTALS, MEANS, AND
  41. C            STANDARD DEVIATIONS FOR EACH CLASS INTERVAL OF
  42. C            VARIABLE 1. ORDER OF MATRIX IS 3 BY INT1.
  43. C        STAT2 - SAME AS STAT1 BUT OVER VARIABLE 2. ORDER OF MATRIX
  44. C            IS 3 BY INT2.
  45. C        NO      - NUMBER OF OBSERVATIONS. NO MUST BE GREATER THAN
  46. C            OR EQUAL TO 1.
  47. C        NV      - NUMBER OF VARIABLES FOR EACH OBSERVATION. NV
  48. C            MUST BE GREATER THAN OR EQUAL TO 1.
  49. C
  50. C     REMARKS
  51. C        IF S IS NULL, OUTPUT AREAS ARE SET TO ZERO
  52. C
  53. C     SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  54. C        NONE
  55. C
  56. C     METHOD
  57. C        INTERVAL SIZES FOR BOTH VARIABLES ARE CALCULATED FROM THE
  58. C        GIVEN INFORMATION OR OPTIONALLY FROM THE MINIMUM AND MAXIMUM
  59. C        VALUES. THE FREQUENCY AND PERCENT FREQUENCY MATRICES ARE
  60. C        DEVELOPED. MATRICES STAT1 AND STAT2 SUMMARIZING TOTALS,
  61. C        MEANS, AND STANDARD DEVIATIONS ARE THEN CALCULATED.
  62. C        THE DIVISOR FOR STANDARD DEVIATION IS ONE LESS THAN THE
  63. C        NUMBER OF OBSERVATIONS USED IN EACH CLASS INTERVAL.
  64. C
  65. C     ..................................................................
  66. C
  67.       SUBROUTINE TAB2(A,S,NOV,UBO,FREQ,PCT,STAT1,STAT2,NO,NV)
  68.       DIMENSION A(1),S(1),NOV(2),UBO(3,2),FREQ(1),PCT(1),STAT1(1),
  69.      1STAT2(2),SINT(2)
  70.       DIMENSION WBO(3,2)
  71.       DO 5 I=1,3
  72.       DO 5 J=1,2
  73.     5 WBO(I,J)=UBO(I,J)
  74. C
  75. C     DETERMINE LIMITS
  76. C
  77.       DO 40 I=1,2
  78.       IF(UBO(1,I)-UBO(3,I)) 40, 10, 40
  79.    10 VMIN=1.0E38
  80.       VMAX=-1.0E38
  81.       IJ=NO*(NOV(I)-1)
  82.       DO 35 J=1,NO
  83.       IJ=IJ+1
  84.       IF(S(J)) 15,35,15
  85.    15 IF(A(IJ)-VMIN) 20,25,25
  86.    20 VMIN=A(IJ)
  87.    25 IF(A(IJ)-VMAX) 35,35,30
  88.    30 VMAX=A(IJ)
  89.    35 CONTINUE
  90.       UBO(1,I)=VMIN
  91.       UBO(3,I)=VMAX
  92.    40 CONTINUE
  93. C
  94. C     CALCULATE INTERVAL SIZE
  95. C
  96.    45 DO 50 I=1,2
  97.    50 SINT(I)=ABS((UBO(3,I)-UBO(1,I))/(UBO(2,I)-2.0))
  98. C
  99. C        CLEAR OUTPUT AREAS
  100. C
  101.       INT1=UBO(2,1)
  102.       INT2=UBO(2,2)
  103.       INTT=INT1*INT2
  104.       DO 55 I=1,INTT
  105.       FREQ(I)=0.0
  106.    55 PCT(I)=0.0
  107.       INTY=3*INT1
  108.       DO 60 I=1,INTY
  109.    60 STAT1(I)=0.0
  110.       INTZ=3*INT2
  111.       DO 65 I=1,INTZ
  112.    65 STAT2(I)=0.0
  113. C
  114. C        TEST SUBSET VECTOR
  115. C
  116.       SCNT=0.0
  117.       INTY=INT1-1
  118.       INTX=INT2-1
  119.       IJ=NO*(NOV(1)-1)
  120.       IJX=NO*(NOV(2)-1)
  121.       DO 95 J=1,NO
  122.       IJ=IJ+1
  123.       IJX=IJX+1
  124.       IF(S(J)) 70,95,70
  125.    70 SCNT=SCNT+1.0
  126. C
  127. C        CALCULATE FREQUENCIES
  128. C
  129.       TEMP1=UBO(1,1)-SINT(1)
  130.       DO 75 IY=1,INTY
  131.       TEMP1=TEMP1+SINT(1)
  132.       IF(A(IJ)-TEMP1) 80,75,75
  133.    75 CONTINUE
  134.       IY=INT1
  135.    80 IYY=3*(IY-1)+1
  136.       STAT1(IYY)=STAT1(IYY)+A(IJ)
  137.       IYY=IYY+1
  138.       STAT1(IYY)=STAT1(IYY)+1.0
  139.       IYY=IYY+1
  140.       STAT1(IYY)=STAT1(IYY)+A(IJ)*A(IJ)
  141.       TEMP2=UBO(1,2)-SINT(2)
  142.       DO 85 IX=1,INTX
  143.       TEMP2=TEMP2+SINT(2)
  144.       IF(A(IJX)-TEMP2) 90,85,85
  145.    85 CONTINUE
  146.       IX=INT2
  147.    90 IJF=INT1*(IX-1)+IY
  148.       FREQ(IJF)=FREQ(IJF)+1.0
  149.       IX=3*(IX-1)+1
  150.       STAT2(IX)=STAT2(IX)+A(IJX)
  151.       IX=IX+1
  152.       STAT2(IX)=STAT2(IX)+1.0
  153.       IX=IX+1
  154.       STAT2(IX)=STAT2(IX)+A(IJX)*A(IJX)
  155.    95 CONTINUE
  156.       IF (SCNT)98,151,98
  157. C
  158. C        CALCULATE PERCENT FREQUENCIES
  159. C
  160.    98 DO 100 I=1,INTT
  161.   100 PCT(I)=FREQ(I)*100.0/SCNT
  162. C
  163. C        CALCULATE TOTALS, MEANS, STANDARD DEVIATIONS
  164. C
  165.       IXY=-1
  166.       DO 120 I=1,INT1
  167.       IXY=IXY+3
  168.       ISD=IXY+1
  169.       TEMP1=STAT1(IXY)
  170.       SUM=STAT1(IXY-1)
  171.       IF(TEMP1-1.0) 120,105,110
  172.   105 STAT1(ISD)=0.0
  173.       GO TO 115
  174.   110 STAT1(ISD)=SQRT(ABS((STAT1(ISD)-SUM*SUM/TEMP1)/(TEMP1-1.0)))
  175.   115 STAT1(IXY)=SUM/TEMP1
  176.   120 CONTINUE
  177.       IXX=-1
  178.       DO 140 I=1,INT2
  179.       IXX=IXX+3
  180.       ISD=IXX+1
  181.       TEMP2=STAT2(IXX)
  182.       SUM=STAT2(IXX-1)
  183.       IF(TEMP2-1.0) 140,125,130
  184.   125 STAT2(ISD)=0.0
  185.       GO TO 135
  186.   130 STAT2(ISD)=SQRT(ABS((STAT2(ISD)-SUM*SUM/TEMP2)/(TEMP2-1.0)))
  187.   135 STAT2(IXX)=SUM/TEMP2
  188.   140 CONTINUE
  189.       DO 150 I=1,3
  190.       DO 150 J=1,2
  191.   150 UBO(I,J)=WBO(I,J)
  192.   151 RETURN
  193.       END
  194. 
  195.       GO TO 115
  196.   110 STAT1(ISD)=SQRT(ABS((STAT1(ISD)-SUM*SUM/TEMP1)/(TEMP1-1.0)))
  197.   115 STAT1(IXY)=SUM/TEMP1
  198.   120 CONT